Package-level declarations

Types

Link copied to clipboard

Semantic placeholders survive the existing chat serializer; native skin objects are inserted afterwards.

Link copied to clipboard
data class AvatarElement(val template: String, val target: HeadTarget? = null, val motion: AvatarMotion? = null)

Optional overrides belong to this instance, never mutate the source template.

Link copied to clipboard
data class AvatarMotion(val type: String = "idle", val target: HeadTarget? = null)
Link copied to clipboard

只采样实际渲染的在线目标;同一 UUID 共用 100ms 快照,不创建任务或进行离线/网络查询。 Samples rendered online targets on demand. Async callers receive idle without reading player state or scheduling work. STILL/WAVE are reserved for explicit poses; animation phase belongs to the client's GameTime shader.

Link copied to clipboard
data class AvatarMotionState(val pose: AvatarPose = AvatarPose.IDLE, val intensity: Int = 0, val headYaw: Double = 0.0, val headPitch: Double = 0.0, val crouching: Boolean = false)

Intensity is gait strength, or JUMP lift (1..15) with 0 reserved for landing.

Link copied to clipboard
Link copied to clipboard

Request-driven CPU frames: never wait for rendering or read Bukkit/player state.

Link copied to clipboard

CPU port of shaders/avatar/{vertex,model}.glsl, sampled at pixel centers. Returns fresh, row-major, straight-alpha ARGB; opacity belongs to the caller. The orthographic frame is always 30x40 model units, including during jumps. No cache, I/O, server state, graphics API, or scheduler is involved.

Link copied to clipboard

Skin selection and motion selection share target rules, but can point at different players.

Link copied to clipboard

Opt-in skin portrait snippets for the existing text shaders (GLSL 150/330).

Link copied to clipboard
data class AvatarSkin(val type: String = "player", val target: HeadTarget = HeadTarget(), val file: String? = null, val model: String = "auto")
Link copied to clipboard
data class AvatarTemplate(val height: Int = 96, val skin: AvatarSkin = AvatarSkin(), val view: AvatarView = AvatarView(), val motion: AvatarMotion = AvatarMotion())

Reusable skin-only figure. Its position belongs to the referencing layout.

Link copied to clipboard

Only prepared placements enter shader tables. Target identities never enter the resource pack.

Link copied to clipboard
data class AvatarView(val yaw: Double = -20.0, val pitch: Double = 5.0)